// @nestjs/core : nest核心模块
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
// 内嵌express
// import express from 'express';
import { mw as requestIpMw } from 'request-ip';
import Limit from 'express-rate-limit';

async function bootstrap() {
  // nest 配置实例
  const app = await NestFactory.create(AppModule);

  // app.use(express.json());
  // express.urlencoded({ extended: true }) : 将请求的body转换为urlencoded格式 浏览器不能识别汉字:
  // 让汉字转换成url编码
  // app.use(express.urlencoded({ extended: true }));
  // 自动添加前缀  /api/v1/
  app.setGlobalPrefix('/api/v1');

  // 记录ip
  app.use(requestIpMw({ attributeName: 'ip' }));
  // 防止恶意攻击
  app.use(
    // 每分钟请求的次数固定
    Limit({
      windowMs: 60 * 1000, // 1分钟
      max: 100, // 最大请求100次
    }),
  ); // 处理限流

  // 跨域
  app.enableCors();
  await app.listen(3000);
}
bootstrap();
